home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / rollerg.c < prev    next >
C/C++ Source or Header  |  2000-03-18  |  3KB  |  106 lines

  1. #include "driver.h"
  2. #include "vidhrdw/generic.h"
  3. #include "vidhrdw/konamiic.h"
  4.  
  5.  
  6. static int bg_colorbase,sprite_colorbase,zoom_colorbase;
  7.  
  8.  
  9.  
  10. /***************************************************************************
  11.  
  12.   Callbacks for the K053245
  13.  
  14. ***************************************************************************/
  15.  
  16. static void sprite_callback(int *code,int *color,int *priority_mask)
  17. {
  18. #if 0
  19. if (keyboard_pressed(KEYCODE_Q) && (*color & 0x80)) *color = rand();
  20. if (keyboard_pressed(KEYCODE_W) && (*color & 0x40)) *color = rand();
  21. if (keyboard_pressed(KEYCODE_E) && (*color & 0x20)) *color = rand();
  22. if (keyboard_pressed(KEYCODE_R) && (*color & 0x10)) *color = rand();
  23. #endif
  24.     *priority_mask = (*color & 0x10) ? 0 : 0x02;
  25.     *color = sprite_colorbase + (*color & 0x0f);
  26. }
  27.  
  28.  
  29. /***************************************************************************
  30.  
  31.   Callbacks for the K051316
  32.  
  33. ***************************************************************************/
  34.  
  35. static void zoom_callback(int *code,int *color)
  36. {
  37.     tile_info.flags = TILE_FLIPYX((*color & 0xc0) >> 6);
  38.     *code |= ((*color & 0x0f) << 8);
  39.     *color = zoom_colorbase + ((*color & 0x30) >> 4);
  40. }
  41.  
  42.  
  43.  
  44. /***************************************************************************
  45.  
  46.     Start the video hardware emulation.
  47.  
  48. ***************************************************************************/
  49.  
  50. int rollerg_vh_start(void)
  51. {
  52.     bg_colorbase = 16;
  53.     sprite_colorbase = 16;
  54.     zoom_colorbase = 0;
  55.  
  56.     if (K053245_vh_start(REGION_GFX1,NORMAL_PLANE_ORDER,sprite_callback))
  57.         return 1;
  58.     if (K051316_vh_start_0(REGION_GFX2,4,zoom_callback))
  59.     {
  60.         K053245_vh_stop();
  61.         return 1;
  62.     }
  63.  
  64.     K051316_set_offset(0, 22, 1);
  65.     return 0;
  66. }
  67.  
  68. void rollerg_vh_stop(void)
  69. {
  70.     K053245_vh_stop();
  71.     K051316_vh_stop_0();
  72. }
  73.  
  74.  
  75.  
  76. /***************************************************************************
  77.  
  78.   Display refresh
  79.  
  80. ***************************************************************************/
  81.  
  82. void rollerg_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
  83. {
  84.     int i;
  85.  
  86.  
  87.     K051316_tilemap_update_0();
  88.  
  89.     palette_init_used_colors();
  90.     K053245_mark_sprites_colors();
  91.     /* set back pen for the zoom layer */
  92.     for (i = 0;i < 16;i++)
  93.         palette_used_colors[(zoom_colorbase + i) * 16] = PALETTE_COLOR_TRANSPARENT;
  94.     palette_used_colors[16 * bg_colorbase] |= PALETTE_COLOR_VISIBLE;
  95.     if (palette_recalc())
  96.         tilemap_mark_all_pixels_dirty(ALL_TILEMAPS);
  97.  
  98.     tilemap_render(ALL_TILEMAPS);
  99.  
  100.     fillbitmap(priority_bitmap,0,NULL);
  101.     fillbitmap(bitmap,Machine->pens[16 * bg_colorbase],&Machine->drv->visible_area);
  102.     K051316_zoom_draw_0(bitmap,1);
  103.  
  104.     K053245_sprites_draw(bitmap);
  105. }
  106.